import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'

const useUserStore = defineStore(
  'user',
  {
    state: () => ({
      token: getToken(),   // token
      // TODO： 这里可能会定义成一个对象userInfo，收集很多的用户资料
      name: '', // 用户名
      avatar: '',  // 用户头像
    }),
    actions: {
      // 登录 
      async login(userInfo) {
        // 调用API下面的登录的请求方法，发起登录请求
        let res = await login(userInfo)
        // console.log(res);
        // 获取到了token，设置给state
        this.token = res.data
        // 存储起来到本地
        setToken(res.data)
      },
      // 获取用户信息
      async getInfo() {
        let res = await getInfo()
        // console.log(res, 'info');
        this.name = res.data.userInfo.username
        this.avatar = res.data.userInfo.avatar
        return res.data
      },
      // 退出系统
      logOut() {
        this.token = ''
        removeToken()
        // return new Promise((resolve, reject) => {
        // logout(this.token).then(() => {
        //   this.token = ''
        //   removeToken()
        //   resolve()
        // }).catch(error => {
        //   reject(error)
        // })
        // })
      }
    }
  })

export default useUserStore
